<?php
/**
 * Created by PhpStorm.
 * User: Yiranleer
 * Date: 2017/1/11
 * Time: 13:57
 */
function request_post($url,$data) {
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}

function request_get($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
}
function getAccessToken($appId,$appSecret){

    $file = 'access_token.txt';
    if( file_exists($file) && $data = file_get_contents($file) and !empty($data)){
        $data = json_decode($data,true);
        if((time()-$data['expires_time'])>7200){
            return getAccessTokenFromWX($appId,$appSecret);
        }else{
            return $data['access_token'];
        }
    }else{
        return getAccessTokenFromWX($appId,$appSecret);
    }

}
function getAccessTokenFromWX($appId,$appSecret){
    $access_token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appId.'&secret='.$appSecret;
    $result = request_get($access_token_url);
    if(!empty($result)){
        $file = fopen('access_token.txt','w+r+');
        !is_array($result) and $result = json_decode($result,true);
        $data = array(
            'access_token'  =>  $result['access_token'],
            'expires_time'  =>  time()
        );
        fwrite($file,json_encode($data));
        fclose($file);
        return $result['access_token'];
    }
    return null;
}